跳到主要内容

Docker 搭建私有仓库

创建一个本地目录来存储容器镜像:

mkdir ~/registry

使用 Docker 运行镜像仓库容器:

docker run -d -p 5000:5000 --name registry -v ~/registry:/var/lib/registry registry:2.8.1
危险

说明:在使用 registry2.3.1 的话会有一个严重的问题,问题就是在 yaml 或者在命令行通过 ctr 和 crictl 命令拉取镜像时携带的 sha256 值和私有仓库中镜像存储的实际 sha256 不一致,因此会报找不到镜像的问题:not found: not found 的错误,所以尽量使用 2.7.1 版本以上的镜像,并且 2.7.1 版本以上的仓库支持加密镜像的存储。

使用 docker run 命令启动了一个名为 registry 的容器,并将容器的 5000 端口映射到本地的 5000 端口上。-v 参数指定了将本地的 ~/registry 目录挂载到容器内的 /var/lib/registry 目录中,这样容器就可以将镜像保存到本地目录中。

20230505144847

在列表中应该能看到 registry 容器的状态为 Up。

使用本地镜像仓库

构建容器镜像时,将镜像名称指定为本地镜像仓库的地址,例如:

docker build -t localhost:5000/jokes:latest .

在上述示例中,localhost:5000 是本地 Docker 镜像仓库的地址,jokes 是镜像的名称,latest 是镜像的标签,最后的 . 表示 Dockerfile 所在目录。

上传镜像到本地 Docker 镜像仓库,例如:

docker push localhost:5000/jokes:latest

使用以下命令查看本地 Docker 镜像仓库中的镜像:

curl -s http://localhost:5000/v2/_catalog | jq .

执行上述命令后,将会得到一个 JSON 格式的输出,其中 repositories 键对应的值即为私有仓库中包含的镜像列表。如果私有仓库为空,则该值将为空数组。可以进一步执行如下命令,查看某个镜像的标签列表:

curl -s http://localhost:5000/v2/<IMAGE_NAME>/tags/list | jq .

其中,<IMAGE_NAME> 需要替换为你需要查询标签的镜像名称。执行上述命令后,将会得到一个 JSON 格式的输出,其中 tags 键对应的值即为该镜像对应的标签列表。

Web 页面查看仓库

如果使用的是官方的 Docker Registry 镜像,可以使用另一个开源工具 —— Docker Registry UI 来配置 web 面板。

Docker Registry UI 是一个基于 Node.js 和 Angular.js 开发的 Docker 镜像管理工具,提供了一个简洁、易用的 web 面板,可以用来查看和管理 Docker 镜像。Docker Registry UI 与 Docker Registry 无缝集成,可以轻松地管理 Docker Registry 中的镜像。

要使用 Docker Registry UI,可以按照以下步骤进行配置:

安装 Docker Registry UI:可以使用 npm 包管理器来安装 Docker Registry UI,执行以下命令:安装 Docker Registry UI:可以使用 npm 包管理器来安装 Docker Registry UI,执行以下命令:

npm install -g docker-registry-ui